\documentclass[a4paper, 12pt, oneside, english,ngerman]{scrartcl}
%\documentclass[a5paper, 12pt, oneside, english,ngerman]{scrartcl}

\usepackage{etex}		%beliebig viele zaehler
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}	%utf8 als standardcodierung
\usepackage[german]{fancyref}	%ermöglicht einfache bezüge, muss vor babel stehen
\usepackage[ngerman]{babel}	%unterstuetzt formatierung multinationaler dokumente
\usepackage[breaklinks = false,linktocpage=true,linkcolor=blue,citecolor=black,filecolor=blue,colorlinks=true]{hyperref} 
\usepackage{xcolor}
\usepackage{graphicx}		%einbinden von Bitmaps
\usepackage{float}
\usepackage{pdfpages}
\usepackage{tikz}
\usepackage[pict2e, verification]{struktex}
\usepackage{amssymb}
\usepackage{amsmath}


%% Makro Definitions
\def\AppName{
			atom\_complete.jar
			}  % End of ``\def\AppName''
\def\FDL{	
			\href{http://www.gnu.org/licenses/fdl.html}{GNU Free Documentation License }
		} % End of ``\def\FDL''
\def\Hardware{
			\begin{itemize}
				\item Betriebssystem mit grafischer Oberfl\"ache
				\item Java 1.6 oder h\"oher
				\item Prozessor mit min. 2 GHZ
				\item min. 1 GB Arbeitsspeicher
				\item min. 10 MB Festplattenspeicher
				
			\end{itemize}
	} % End of ``\def\Hardware''
	
%% End of Makro Definitions

\begin{document}
	
	\begin{titlepage}
		\title{Software Dokumentation} 
		\subtitle{Simulation von Atomen}
		\author{
			 \textbf{\large{Markus Paff}}  -  paff@wti-juelich.de\\ 
			\textbf{\large{Hendric Butz}}  -  butz@fh-aachen.de\\
	         		\textbf{\large{Kevin Drzycimski}}  -  drzycimski@fh-aachen.de\\	
		} % End \author	
		\date{
			%	FH Aachen\\
			%	Ginsterweg 1\\
				J\"ulich\\		
			%\vspace*{2cm}
			\today
		} % End \date			
	\end{titlepage}
	
	\maketitle	
	    	\thispagestyle{empty}
	\quad 	%Indexzählung auf titelseite unterbinden und leere Seite einfügen
	\newpage 
	\vspace*{\fill}
	Copyright (C)  PaBuDr Software Corp.
         Permission is granted to copy, distribute and/or modify this document
	under the terms of the \FDL, Version 1.3
	or any later version published by the Free Software Foundation;
	with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
   
	
    	\thispagestyle{empty}
	\quad 
	\newpage
	\setcounter{page}{1}
	\tableofcontents
	\newpage





%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%																		         %
%							ENTWICKLUNGSDOKUMENTATION				         %
%																		         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

	\section{Entwicklungsdokumentation}
		\subsection{Pflichtenheft} %Pflichtenheft
			%\includepdf[pages=3-8]{Pflichtenheft.pdf}
			\url{file:///Users/booze/Development/svn/se_java/trunk/Pflichtenheft.pdf}
			\vspace*{\fill}
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		
		\subsection{Entwurf}
			\subsubsection{1. Entwurf der grafischen Bedienoberfl\"ache}
				\begin{figure}[H]
  					\centering
					\includegraphics[width=0.8\linewidth]{./screens/Entwurf.png}
					\caption{1. Entwurf des Hauptfensters}
				\end{figure}

				\begin{figure}[H]
					\centering
					\includegraphics[width=0.8\linewidth]{./screens/Entwurf1.png}
					\caption{1. Entwurf des Barrierenkonfigurationsfensters}
					\label{fig:barrierenfenster}
				\end{figure}
			\subsubsection{1. Klassenentwurf mit UML 2.0}	
				\begin{figure}[H]
					\centering
					\includegraphics[width=0.8\linewidth]{./newDiagramme/Entwurf Klassendiagramm.png}
					\caption{1. Klassenentwurf als UML-Klassendiagramm}
					\label{fig:klassendiagramm}
				\end{figure}
				\vspace*{\fill} % soll alleine stehen
		
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			\newpage
		\subsection{Programmdokumentation}
		
			\subsubsection{Programmaufgabe}
				Das Programm verdeutlicht Einsteigern in die Wissenschaft, wie sich Atome im Allgemeinen verhalten, unter
				ber\"ucksichtigung der Brown'schen Molekularbewegung. Das Verhalten der Atome wird im zweidimensionalen Raum simuliert.
				Es k\'onnen St\"osse von Atomen untereinander und Barrieren durchgef\"uhrt werden. 
				Ausserdem besteht die M\"oglichkeit einzelne Atome zu markieren um so ihren Weg nachzuvollziehen, so entstandene Atomspuren 
				k\"onnen in Bilddateien abgespeichert werden. Ebenso k\"onnen Einstellungen der Simulationen gespeichert bzw. geladen werden.
				
			\subsubsection{Autoren}
				\begin{itemize}
					\item Butz, Henric - butz@fh-aachen.de
					\item Drzycimski, Kevin - drzycimski@fh-aachen.de
					\item Paff, Markus - paff@wti-juelich.de
				\end{itemize}
			\subsubsection{Versionsnummer}
				\begin{itemize}					
					\item 0.9.110  
				\end{itemize}
			
			\subsubsection{Struktogramme, Programmablaufpl\"ane, Aktivit\"atsdiagramme}
				\input{struktogramme/wandKollision} \newpage
				\input{struktogramme/atomKollision} \newpage
				
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
			%\subsubsection{Baumdiagramme, Paketdiagramme}
			\subsubsection{Klassendiagramme}
				\begin{itemize}

					\item \textbf{Simulator}
						\begin{figure}[H]
							\centering
							\includegraphics[width=0.8\linewidth]{./newDiagramme/Klassendiagram Simulator.png}
							\caption{UML-Klassendiagramm der Simulatorklasse}
							\label{fig:Simulatorklassendiagramm}
						\end{figure}
					% end \item[Simulator]
					\newpage	
					\item \textbf{Barrier}
						\begin{figure}[H]
							\centering
							\includegraphics[width=0.8\linewidth]{./newDiagramme/Klassendiagram Barrier.png}
							\caption{UML-Klassendiagramm der Barrierenklasse}
							\label{fig:Barrierklassendiagramm}
						\end{figure}
					% end \item[Barrier]
							
					\item \textbf{Atom}
						\begin{figure}[H]
							\centering
							\includegraphics[width=0.8\linewidth]{./newDiagramme/Klassendiagram Atom.png}
							\caption{UML-Klassendiagramm der Atomklasse}
							\label{fig:Atomklassendiagramm}
						\end{figure}
					%end \item[Atom]					
					
				\end{itemize}
			\subsubsection{Sequenzdiagramme}
				Die beiden nachfolgenden Sequenzdiagramme beschreiben 2 wichtige Methoden der Klasse Simulator,
				das Klassendiagramm dieser Klasse ist in \fref{fig:Simulatorklassendiagramm} abgebildet.
				\begin{itemize}
					\item \textbf{entwirre \small{(\fref{fig:entwirresequenz})}}\\ 
						Falls 2 Atome \"ubereinander liegen werden diese in Richtung ihrer Mittelpunktsvektoren soweit verschoben bis 
						sie sich nicht mehr schneiden.

					\item \textbf{update \small{(\fref{fig:updatesequenz})}}\\
						Bewegt jedes einzelne Atom der aktuellen Simulation und ueberpr\"uft dabei ob Kollisionen mit anderen Atomen, Barrieren oder 
						den Fensterr\"andern entstehen. Tritt dabei eine Kollision auf, wird diese entsprechen behandelt
				\end{itemize}

					\begin{figure}[H]
						\centering
						\includegraphics[width=0.8\linewidth]{./newDiagramme/SequenceDiagram entwirre.png}
						\caption{Sequenzdiagramm der Methode entwirre aus der Klasse Simulator}
						\label{fig:entwirresequenz}
					\end{figure}		
					
					\begin{figure}[H]
						\centering
						\includegraphics[width=0.8\linewidth]{./newDiagramme/SequenceDiagram update.png}
						\caption{Sequenzdiagramm der Methode update aus der Klasse Simulator}
						\label{fig:updatesequenz}
					\end{figure}		
										

				\newpage	
			\subsubsection{Bildschirmdarstellungen}
		%% End \subsection{Programmdokumentation}		
		\newpage
		\subsection{Testdokumentation}
		
			\subsubsection{Black Box Tests}
			
			\begin{enumerate}
			%% ATOMTEST
				\item Atomkollision mit Atomen\\
					\begin{figure}[H]
							\centering
							\includegraphics[width=0.8\linewidth]{./newDiagramme/TestCase AtomAtom.png}
							\caption{Atomkollision mit Atomen }
							\label{fig:testcaseAtomAtom}
						\end{figure}		
					\begin{itemize}
						\item Im ersten Testlauf wird nur das Atom(1) im Simulator auf Kollision gepr\"uft \(\rightarrow\) Keine Kollision
						\item Im zweiten Lauf wird Atom(1) mit Atom(2) getestet \(\rightarrow\) Keine Kollision
						\item Im letzten Lauf wird Atom(1) mit Atom(2) und Atom(3) getestet \(\rightarrow\) Kollision
					\end{itemize}

			%% BARRIERENTEST
				\newpage	
				\item Atomkollision mit Barrieren
					Es wird die Barriere mit den Atomen 1, 2, 3 getestet.
						\begin{figure}[H]
							\centering
							\includegraphics[width=0.8\linewidth]{./newDiagramme/TestCase AtomBarrier.png}
							\label{fig:testcaseAtomBarriere}
							\caption{Atomkollision mit Barriere}
						\end{figure}		
					\begin{itemize}
						\item Atom(1) hat auf jeden Fall keine Kollision, weil der Abstand zur Geraden wesentlich gr\"osser als der Radius ist.
						\item Atom(2) hat zu der Geraden einen grossen Abstand, liegt allerdings nicht auf der Strecke \(\rightarrow\) keine Kollision
						\item Atom(3) liegt direkt auf der Barriere \(\rightarrow\) Kollision
					\end{itemize}
			%% WAWNDKOLLISION
			\newpage
				\item Atomkollision mit dem Fensterrahmen(W\"ande)
					Atom wird bewegt und Kollision wird an allen 4 W\"anden simmuliert.
					Es wird erwartet, dass sich der Geschwindigkeitsvektor des Atoms entsprechend \"andert.
					\begin{figure}[H]
						\centering
						\includegraphics[width=0.8\linewidth]{./newDiagramme/TestCase Wandkollision.png}
						\label{fig:testcaseAtomWand}
						\caption{Atomkollision mit Fensterrahmen}
					\end{figure}							
					\begin{itemize}
						\item Atom(1) kollidiert mit unterer Wand \(\rightarrow\) y-Richtung \"andert sich
						\item Atom(2) kollidiert mit rechter Seitenwand \(\rightarrow\) x - Richtung \"andert sich
						\item Atom(3) kollidiert mit oberer Wand \(\rightarrow\) y-Richtung \"andert sich
						\item Atom(4) kollidiert mit linker Seitenwand \(\rightarrow\) x-Richtung \"andert sich
					\end{itemize}
			\end{enumerate}
			
			% TESTERGEBNISSE
			\newpage
			\textbf{Ergebnis aller Black Box Tests:}\\
			\begin{itemize}
				\item Teste Barrier-Atom Intersect
				\item Teste Atom-Atom Kollision
				\item Teste Wand Kollision
				\item Alle Tests erfolgreich!
			\end{itemize}
			
%			\subsubsection{Testf\"alle}
			
%			\subsubsection{Ergebnisse der Testl\"aufe}
			
		%% End \subsection{Testdokumentation}
	%% End \section{Entwicklungsdokumentation}
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%																		        %
%							BENUTZUNGSDOKUMENTATION					        %
%																		        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	\newpage
	\section{Benutzungsdokumentation}
		\subsection{Copyright und Freistellung von Anspr\"uchen}
			\tiny{\include{license/gpl}}			

			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

		%\subsection{Freistellung von Anspr\"uchen}
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		\newpage	
		\subsection{Entscheidungsinformation}
			Das Programm dient der Simulation von Atomen im zweidimensionalen Raum.
			Es k\"onnen Kollisionen mit anderen Atomen und Barrieren(Balken) ausge\"fuhrt
			werden. Um das Programm international einsetzen zu k\"onnen ist dessen Sprache Englisch.
			In keinem Fall dient das Programm der wissenschaftlichen Forschung mit 
			Atomen.
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			
		\subsection{Benutzungsanleitung}
			Damit die hier aufgef\"uhrten Schritte wie beschrieben ausgef\"uhrt werden koennen,
			ist das Programm wie in \fref{sec:installation} beschrieben zu installieren.
			
			\subsubsection{Starten des Programms}
				Auf den meisten Betriebssystemen kann das Programm auf 2. Arten gestaret werden.
				\begin{enumerate}
					\item Kommandozeile - durch Eingabe von \textbf{java -jar \AppName} (z.B.: Unix, Linux, Max OSX, Windows)
					\item Grafische Oberfl\"ache - durch Doppelklick auf die Datei \textbf{\AppName} (z.B.: Max OSX, Windows)
				\end{enumerate}
				%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
				
			\subsubsection{Konfiguration und Start einer Simulation}
				Wenn der Benutzer das Programm startet, erscheint das Hauptmen\"u, in dem man alle m\"oglichen Operationen einstellen kann.
				\begin{figure}[H]
  					\centering
					\includegraphics[width=0.8\linewidth]{./screens/StartSim1.png}
					\caption{Hauptfenster}
					\label{fig:startsim1}
				\end{figure}
				
				Um eine Simulation starten zu k\"onnen, mu\ss man zuvor mindestens ein Atom in die Simulationsebene einf\"ugen. Es gibt 2 M\"oglichkeiten Atome zu 
				definieren: Entweder man gibt Geschwindigkeit, Masse, Radius, Anzahl, Name und Farbe manuell ein oder man w\"ahlt ein Atom aus dem Periodensystem 
				der Elemente aus. Falls man sich f\"ur die zweite M\"oglichkeit entscheidet , muss man nur auf den Button ``Periodic Table'' dr\"ucken und sich ein Atom 
				aussuchen. Sobald  auf ``Accept'' gedr\"uckt wurde, werden Radius, Masse und Name in die entsprechenden Felder eingetragen. Jetzt muss der Benutzer nur 
				noch die Geschwindigkeit, Anzahl und Farbe anpassen. 


				\begin{figure}[H]
  					\centering
					\includegraphics[width=0.8\linewidth]{./screens/StartSim2.png}
					\caption{Tabelle mit Atomen aus dem Periodensystem}
					\label{fig:startsim2}
				\end{figure}
				
				Neben Atomen kann der Benutzer auch Barrieren einf\"ugen. 
				
				\begin{figure}[H]
					\centering
					\includegraphics[width=0.8\linewidth]{./screens/StartSim3.png}
					\caption{Barrieren Einstellungen}
					\label{fig:startsim3}
				\end{figure}
				Hier muss nur ein Anfangspunkt und ein Endpunkt eingegeben werden. Nachdem man dann auf ``add barriere'' gedr\"uckt hat, erscheint die Barriere als Linie 
				in der Simulationsebene. Der Benutzer kann beliebig viele Atome in die Ebene einf\"ugen, aber diese d\"urfen nur zu drei unterschiedlichen Atomtypen 
				geh\"oren. Barrieren darf er ebenfalls beliebig viele einf\"ugen. Nachdem der Benutzer alle Einstellungen vorgenommen hat, kann er mit dem Button ``Start'' 
				die Simulation starten. Mit dem daneben liegenden Button ``Break'' kann er die Simulation unterbrechen, um ggf. die momentane Atomverteilung als Bilddatei 
				zu speichern und wenn er auf ``Stop'' dr\"uckt wird die Simulation abgebrochen und alle Einstellungen gehen verloren.
				Um alte Simulation zu starten, gibt es die M\"oglichkeit Einstellungen zu laden unter: File ? load settings. So kann man alte Simulation erneut nachvollziehen.

			
			
			
			
				%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

			\subsubsection{Einstellungen speichern / laden}
				\begin{itemize}
					\item Speichern\\
						Hierzu wird  w\"ahrend einer Simulation oder im Pause-Modus auf den Men\"upunkt ``File'' geklickt,  
						dies \"offnet ein Dropdownmen\"u in dem der Men\"upunkt ``save settings'' gew\"ahlt wird.
						Alternativ kann die Tastenkombination ``Strg + s'' verwendet werden.
						Nun \"offnet sich ein Fenster in dem der Speicherort f\"ur die Einstellungen der aktuellen Simulation gew\"ahlt wird.
						Nach bet\"atigen der Schaltfl\"ache ``Save''werden die aktuellen Einstellungen in der ausgew\"ahlten Datei gespeichert,

						\begin{figure}[H]
  							\centering
							\includegraphics[width=0.8\linewidth]{./screens/einstellungenspeichern.png}
							\caption{Einstellungen einer Simulation in Datei speichern}
				  			\label{fig:settingsspeichern}
						\end{figure}
					 	
					\item Laden\\
						Hierzu wird  w\"ahrend einer Simulation oder im Pause-Modus auf den Men\"upunkt ``File'' geklickt,  
						dies \"offnet ein Dropdwonmen\"u in dem der Men\"upunkt ``load settings'' gew\"ahlt wird.
						Alternativ kann die Tastenkombination ``Strg + l'' verwendet werden.
						Nun \"offnet sich ein Fenster in dem die Datei, mit den gew\"unschten Einstellungen, ausgew\"ahlt wird.
						In der nachfolgenden Grafik werden die Einstellungen, welche unter \fref{fig:settingsspeichern} gespeichert wurden, geladen.
						\begin{figure}[H]
							\centering
							\includegraphics[width=0.8\linewidth]{./screens/einstellungenladen.png}
							\caption{Datei mit gespeicherten Einstellungen w\"ahlen}
							\label{fig:settingsladen}
						\end{figure}
						
						Nach bet\"atigen der Schaltfl\"ache ``use settings'' wird die gespeicherte Simulation im Programmfenster angezeigt und
						kann nun weitergef\"uhrt werden.
						\begin{figure}[H]
 	 						\centering
							\includegraphics[width=0.8\linewidth]{./screens/einstellungengeladen.png}
							\caption{Einstellungen geladen}
						  	\label{fig:settingsgeladen}
						\end{figure}	
						
				\end{itemize}
				%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
				
			
			
			
			\subsubsection{Momentaufnahme der Atomspuren speichern}
				Hierzu wird  w\"ahrend einer Simulation oder im Pause-Modus auf den Men\"upunkt ``File'' geklickt,  
				dies \"offnet ein Dropdwonmen\"u in dem der Men\"upunkt ``save as image'' gew\"ahlt wird.
				Alternativ kann die Tastenkombination ``Strg + i'' verwendet werden.
				Nun \"offnet sich ein Fenster in dem Format und Speicherort f\"ur das aktuelle Bild gew\"ahlt wird.
				Nach bet\"atigen der Schaltfl\"ache ``save''wird das aktuelle Bild in der ausgew\"ahlten Datei gespeichert,

				\begin{figure}[H]
  					\centering
					\includegraphics[width=0.8\linewidth]{./screens/atomspurspeichern.png}
					\caption{Bild von Atomspuren im ``.png''-Format speichern}
				  	\label{fig:spurspeichern}
				\end{figure}				
				
				Diese Datei kann nun, von einem zur Darstellung des gew\"ahlten Bildformates geeigneten Programms,  ge\"offnet und
				betrachtet werden.	
				
				\begin{figure}[H]
  					\centering
					\includegraphics[width=0.8\linewidth]{./screens/atomspur.png}
					\caption{Bild von Atomspuren}
				  	\label{fig:spurbild}
				\end{figure}		
				%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

				
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		
						
		\subsection{Hard- und Softwarebedarf}
			\label{sec:hardware}
			\Hardware
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			
		\subsection{Installationsanleitung}
			\label{sec:installation}
			Die Installation des Programms geschieht durch einfaches kopieren der Programmdatei
			``\AppName'' in ein beliebieges Verzeichnis mit ausreichend Speicherplatz.
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			
		\subsection{Betriebsbedingungen}
			Enstprechen folgenden, in \fref{sec:hardware} beschriebenen, Soft- und Hardwareanforderungen.
			\Hardware
			
		%	\begin{itemize}
		%		\item Betriebssystem mit grafischer Oberfl\"ache
		%		\item Java 1.6 oder h\"oher
		%		\item Prozessor mit min. 2 GHZ
		%		\item min. 1 GB Arbeitsspeicher
		%	\end{itemize}
	%% End \section{Benutzungsdokumentation}
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
			%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}
